package com.demo.juc.locks;

/**
 * javap -c  SyncMonitor.class 反编译查看内部机制
 * javap -v  查看更详细的信息
 *
 *1）字节码角度解析
 * 同步代码快（标识）：  flags: ACC_PUBLIC
 * 同步方法(标识)：     flags: ACC_PUBLIC, ACC_SYNCHRONIZED
 * 静态同步方法（标识）： flags: ACC_PUBLIC, ACC_STATIC, ACC_SYNCHRONIZED
 *
 * 2）ObjectMonitor（）汇编角度解析 为什么每个对象都持有一把锁
 *
 */

public class SyncMonitor {
    Object o = new Object();

    // 同步代码块
    public void m() {
        synchronized (o) {
            System.out.println("synchronized code block...");
        }
    }


    //同步方法
    public synchronized void m1() {
        System.out.println("synchronized method...");
    }

    //静态同步方法
    public static synchronized void m2() {
        System.out.println("static synchronized method...");
    }

    public static void main(String[] args) {

    }
}
